#include "motor.h"


void MOTOR_CONTROL(int num,int dir)
{
	switch(num)
	{
	case 2:
		if(dir)
		{
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_7,GPIO_PIN_RESET);
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_6,GPIO_PIN_SET);
		}
		else
		{
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_7,GPIO_PIN_SET);
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_6,GPIO_PIN_RESET);
		}
		break;

	case 1:
		if(dir)
		{
			HAL_GPIO_WritePin(GPIOG,GPIO_PIN_14,GPIO_PIN_RESET);    // GPIO_PIN_SET   GPIO_PIN_RESET
			HAL_GPIO_WritePin(GPIOG,GPIO_PIN_13,GPIO_PIN_SET);
		}
		else
		{
			HAL_GPIO_WritePin(GPIOG,GPIO_PIN_14,GPIO_PIN_SET);    // GPIO_PIN_SET   GPIO_PIN_RESET
			HAL_GPIO_WritePin(GPIOG,GPIO_PIN_13,GPIO_PIN_RESET);
		}
		break;

	case 0:
		if(dir)
		{
			HAL_GPIO_WritePin(GPIOG,GPIO_PIN_10,GPIO_PIN_RESET);    //GPIO_PIN_SET   GPIO_PIN_RESET
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_5,GPIO_PIN_SET);
		}
		else
		{
			HAL_GPIO_WritePin(GPIOG,GPIO_PIN_10,GPIO_PIN_SET);    //GPIO_PIN_SET   GPIO_PIN_RESET
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_5,GPIO_PIN_RESET);
		}
		break;

		case 3:
		if(dir)
		{
			HAL_GPIO_WritePin(GPIOG,GPIO_PIN_9,GPIO_PIN_SET);
			HAL_GPIO_WritePin(GPIOG,GPIO_PIN_10,GPIO_PIN_RESET);
		}
		else
		{
			HAL_GPIO_WritePin(GPIOG,GPIO_PIN_9,GPIO_PIN_RESET);
			HAL_GPIO_WritePin(GPIOG,GPIO_PIN_10,GPIO_PIN_SET);
		}
		break;

	default:return;
	}

}


void MOTOR_PWM(int num ,int pwm_value)
{

	switch(num)
	{
	case 0:
		__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,pwm_value);
		break;
	case 1:
		__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_4,pwm_value);
		break;
	case 3:
		if(pwm_value<0)
		{
			pwm_value = -pwm_value;
			MOTOR_CONTROL(2, 0);
		}else
		{
			MOTOR_CONTROL(2, 1);
		}
		__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,pwm_value);
		break;
	case 2:
		if(pwm_value<0)
		{
			pwm_value = -pwm_value;
			MOTOR_CONTROL(3, 0);
		}else
		{
			MOTOR_CONTROL(3, 1);
		}
		__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,pwm_value);
		if(pwm_value<0)
		break;
	default:return;

	}

}

void MOTOR_STOP()
{

	//MOTOR2
	HAL_GPIO_WritePin(GPIOG,GPIO_PIN_10,GPIO_PIN_RESET);    //GPIO_PIN_SET   GPIO_PIN_RESET
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_5,GPIO_PIN_RESET);

	//MOTOR3
	HAL_GPIO_WritePin(GPIOG,GPIO_PIN_12,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOG,GPIO_PIN_11,GPIO_PIN_RESET);

}


